package outputstream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * FileOutputStream类:
 *  构造方法:
 *   public FileOutputStream(String name) throws FileNotFoundException
 *      1.构造方法会根据路径去硬盘中检测该路径是否可用,不可用则直接诶抛出异常FileNotFoundException
 *      2.如果该路径在硬盘中可用,则检测是否存在该文件,如果不存在则会自动创建一个新的空白文件
 *      3.如果该路径在硬盘中可用并且已存在此文件,该构造方法则会清空文件内容(删除文件重新创建)
 *  成员方法:
 *   public void write(int b) throws IOException
 *      向指定文件中写入一个字节
 *   public void close() throws IOException
 *      关闭输出流并释放系统底层资源
 *
 *  向文件中写字节的逻辑:
 *    1.关联文件(将来写到哪里): 利用输出流中的构造方法去关联文件
 *    2.利用write方法向文件中写入字节
 *    3.关流释放资源
 */
public class FileOutputStreamDemo01 {
    public static void main(String[] args)throws Exception {
        //method01();
        //method02();

        //method03();
        FileOutputStream fos = new FileOutputStream("day22-Io-01/1.txt");

        fos.close();

        fos.write(21);//java.io.IOException: Stream Closed 写操作需要利用系统底层资源,当流只要已关闭,就无法使用系统底层资源进行写操作
        fos.write(21);
        fos.write(21);


    }

    private static void method03() throws IOException {
        //最终打开1.txt,我能看到100
        FileOutputStream fos = new FileOutputStream("day22-Io-01/1.txt");

        //fos.write(100);

        fos.write(49);//写入1字符的ACSII码(1个字节)
        fos.write(48);//写入0字符的ACSII码(1个字节)
        fos.write(48);//写入0字符的ACSII码(1个字节)

        fos.close();
    }

    private static void method02() throws IOException {
        FileOutputStream fos = new FileOutputStream("day22-Io-01/1.txt");

        //利用fos写入三个字节
        fos.write(97);
        fos.write(108);
        fos.write(98);

        fos.close();
    }

    private static void method01() throws IOException {
        //FileOutputStream fileOutputStream = new FileOutputStream("E:/1.txt");//E:\1.txt (系统找不到指定的路径。)
        FileOutputStream fos = new FileOutputStream("day22-Io-01/1.txt");//该构造方法关联的路径在硬盘中不存在,
        // 那么会在该路径下自动创建一个新的空白文件
        fos.write(97);//将97这一个字节写入1.txt中(97将以acs码的形式转化)
        fos.close();//跟程序逻辑无关,主要目的是最终操作完,释放系统底层资源(硬盘资源,cpu占用资源)
    }
}
